home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / 3dstars2.lha / STARS3D.S < prev   
Encoding:
Text File  |  1994-02-07  |  23.2 KB  |  730 lines

  1. NOINTS    = 1        ; Turn off interrupts
  2. DTIME    = 0        ; Display rastertime
  3. NSTARS    = 880        ; Number of stars
  4. PFACT    = $FF00        ; Perspective factor
  5. ZSPEED    = -1        ; Speed of Z-movement
  6. BUFW    = 44        ; Buffer width in bytes
  7. BUFH    = 272        ; Buffer height in lines
  8. BOXW    = 44        ; Starfield width in bytes
  9. BOXH    = 272        ; Starfield height in lines
  10. _LVODisable        = -120    ; exec.library function offsets
  11. _LVOEnable        = -126
  12. _LVOCloseLibrary    = -414
  13. _LVOOpenLibrary        = -552
  14. _LVOLoadView        = -222    ; grapics.library function offsets
  15. _LVOWaitBlit        = -228
  16. _LVOWaitTOF        = -270
  17. _LVOOwnBlitter        = -456
  18. _LVODisownBlitter    = -462
  19. ib_ViewLord        = 34    ; System structures attributes
  20. gb_copinit        = 38
  21. ExecBas        = $00000004
  22. CustomBas        = $00DFF000
  23. CIAA        = $00BFE001
  24.  
  25. VHPOSR        = $006    ; Custom registers
  26. BLTCON0        = $040
  27. BLTDPTH        = $054
  28. BLTSIZE        = $058
  29. BLTDMOD        = $066
  30. COP1LCH        = $080
  31. COPJMP1        = $088
  32. COLOR00        = $180
  33.  
  34. ;-------------------------------------------------------------------------
  35. ; MACROS
  36. ;-------------------------------------------------------------------------
  37.  
  38. CALL:    MACRO                ; Call a library function
  39.     move.l    \1Bas,a6
  40.     jsr    _LVO\2(a6)
  41.     ENDM
  42.  
  43. RND:    MACRO                ; Construct a 'random' byte in d0
  44.     move.b    (a1),d0
  45.     move.b    (a2),d1
  46.     move.b    (a3),d2
  47.     eor.b    d2,d0
  48.     eor.b    d1,d0
  49.     add.b    d0,(a3)            ; Remove one or both of these
  50.     add.b    d7,d0            ; for 'constellations' of stars
  51.     ENDM
  52.  
  53. ;-------------------------------------------------------------------------
  54. ; PROGRAM START
  55. ;-------------------------------------------------------------------------
  56.  
  57.     SECTION    Code,CODE
  58.  
  59. StartProgram:
  60.  
  61.     lea    GfxName,a1    ;Open graphics.library
  62.     moveq    #0,d0
  63.     CALL    Exec,OpenLibrary
  64.     move.l    d0,GfxBas
  65.     beq.w    .Exit
  66.  
  67.     lea    IntName,a1        ; Open intuition.library
  68.     moveq    #0,d0
  69.     CALL    Exec,OpenLibrary
  70.     move.l    d0,IntBas
  71.     beq.w    .Exit
  72.  
  73.     sub.l    a1,a1            ; Grab display
  74.     CALL    Gfx,LoadView
  75.     CALL    Gfx,WaitTOF
  76.     CALL    Gfx,WaitTOF
  77.  
  78.     CALL    Gfx,OwnBlitter        ; Grab blitter
  79.     CALL    Gfx,WaitBlit
  80.  
  81.     IFNE    NOINTS
  82.     CALL    Exec,Disable        ; Disable interrupts
  83.     ENDC
  84.  
  85.     bsr    Initialization
  86.     bsr    MainLoop
  87.  
  88.     IFNE    NOINTS
  89.     CALL    Exec,Enable        ; Enable interrupts
  90.     ENDC
  91.  
  92.     CALL    Gfx,DisownBlitter    ; Free blitter
  93.  
  94.     move.l    IntBas,a0        ; Restore display
  95.     lea    ib_ViewLord(a0),a1
  96.     CALL    Gfx,LoadView
  97.     CALL    Gfx,WaitTOF
  98.     CALL    Gfx,WaitTOF
  99.     lea    CustomBas,a0
  100.     move.l    GfxBas,a6
  101.     move.l    gb_copinit(a6),COP1LCH(a0)
  102.     move.w    #0,COPJMP1(a0)
  103.  
  104. .Exit:    move.l    IntBas,a1        ; Close intuition.library
  105.     cmp.l    #0,a1
  106.     beq.s    .NoInt
  107.     CALL    Exec,CloseLibrary
  108.  
  109. .NoInt:    move.l    GfxBas,a1        ; Close graphics.library
  110.     cmp.l    #0,a1
  111.     beq.s    .NoGfx
  112.     CALL    Exec,CloseLibrary
  113.  
  114. .NoGfx:    moveq    #0,d0        ; Exit program
  115.     rts
  116.  
  117. ;-------------------------------------------------------------------------
  118. ; MAINLOOP
  119. ;-------------------------------------------------------------------------
  120.  
  121. MainLoop:
  122.  
  123.     lea    CustomBas,a0        ; Wait for line 255
  124. .Wait:    cmp.b    #255,VHPOSR(a0)
  125.     bne.s    .Wait
  126.  
  127.     IFNE    DTIME
  128.     move.w    #$336,CustomBas+COLOR00
  129.     ENDC
  130.  
  131.     bsr    DrawStars
  132.  
  133.     IFNE    DTIME
  134.     move.w    #$000,CustomBas+COLOR00
  135.     ENDC
  136.  
  137.     btst    #6,CIAA        ; Loop until LMB is pressed
  138.     bne.s    MainLoop
  139.     rts
  140.  
  141. ;-------------------------------------------------------------------------
  142. ; INITIALIZATION
  143. ;-------------------------------------------------------------------------
  144.  
  145. Initialization:
  146.  
  147.     bsr    InitBSS
  148.     bsr    InitCopper
  149.     bsr    InitCoords
  150.     bsr    InitPerspective
  151.     REPT    3
  152.     bsr    StarBuffer
  153.     bsr    StarClear
  154.     ENDR
  155.     rts
  156.  
  157. ;-------------------------------------------------------------------------
  158.  
  159. InitBSS:
  160.  
  161.     lea    Blanks,a0        ; Init BSS-sections
  162.     move.l    #(256/4)-1,d7
  163. .1:    clr.l    (a0)+
  164.     dbf    d7,.1
  165.  
  166.     lea    StarBuffer1,a0
  167.     lea    StarBuffer2,a1
  168.     lea    StarBuffer3,a2
  169.     move.l    #(BUFW*BUFH/2)-1,d7
  170. .2:    clr.l    (a0)+
  171.     clr.l    (a1)+
  172.     clr.l    (a2)+
  173.     dbf    d7,.2
  174.     rts
  175.  
  176. ;-------------------------------------------------------------------------
  177.  
  178. InitCopper:
  179.  
  180.     lea    CopSprites+2,a0        ; Init sprite-pointers
  181.     move.l    #Blanks,d0
  182.     move.l    d0,d1
  183.     swap    d1
  184.     moveq    #7,d7
  185. .Loop:    move.w    d1,(a0)
  186.     move.w    d0,4(a0)
  187.     addq.w    #8,a0
  188.     dbf    d7,.Loop
  189.  
  190.     lea    CopBplPtr,a0        ; Init bitplane-pointers
  191.     move.l    StarBufPtr,d0
  192.     move.l    StarBufPtr,d1
  193.     add.l    #BUFW,d1
  194.     move.w    d0,6(a0)
  195.     move.w    d1,14(a0)
  196.     swap    d0
  197.     swap    d1
  198.     move.w    d0,2(a0)
  199.     move.w    d1,10(a0)
  200.  
  201.     lea    CustomBas,a0        ; Start new copperlist
  202.     move.l    #CopperList,COP1LCH(a0)
  203.     move.w    #0,COPJMP1(a0)
  204.     rts
  205.  
  206. ;-------------------------------------------------------------------------
  207.  
  208. InitCoords:                ; Randomize coordinates
  209.  
  210.     lea    StarCoords,a0
  211.     lea    $DFF007,a1        ; Horizontal beam pos
  212.     lea    $BFD800,a2        ; Horizontal blank counter
  213.     lea    RndStore,a3
  214.     move.w    #NSTARS-1,d7
  215. .Loop:    RND
  216.     and.l    #$FF,d0
  217.     move.w    d0,(a0)+        ; Store X-coord
  218.     RND
  219.     and.l    #$FF,d0
  220.     move.w    d0,(a0)+        ; Store Y-coord
  221.     RND
  222.     lsl.l    #8,d0
  223.     and.l    #$FF00,d0
  224.     move.w    d0,(a0)+        ; Store Z-coord
  225.     dbf    d7,.Loop
  226.     rts
  227.  
  228. ;-----------------------------------------------------------------------------
  229.  
  230. InitPerspective:            ; Calculate perspective-tables
  231.  
  232.     lea    PerTabX,a0
  233.     lea    PerTabB,a1
  234.     lea    PerTabY,a2
  235.     move.l    #BOXW*4,a3
  236.     move.l    #BOXH/2,a4
  237.     move.l    #((BOXW*4)<<16)-1,a5
  238.     move.l    #((BOXH/2)<<16)-1,a6
  239.     movem.l    Blanks,d0-d4
  240.     move.l    #$7FFF,d5
  241.     move.l    #255,d6
  242. .1:    moveq    #0,d7
  243. .2:    move.w    d7,d3
  244.     move.w    d7,d4
  245.     mulu    #(BOXW*4)<<8,d3
  246.     add.l    d3,d3
  247.     swap    d3
  248.     mulu    #(BOXH/2)<<8,d4
  249.     add.l    d4,d4
  250.     swap    d4
  251.     sub.w    a3,d3
  252.     muls    d5,d3
  253.     add.l    d3,d3
  254.     add.l    a5,d3
  255.     swap    d3
  256.     sub.w    a4,d4
  257.     muls    d5,d4
  258.     add.l    d4,d4
  259.     add.l    a6,d4
  260.     swap    d4
  261.     move.l    d3,d0
  262.     move.l    d3,d1
  263.     move.l    d4,d2
  264.     lsr.w    #3,d0
  265.     and.w    #7,d1
  266.     sub.w    #7,d1
  267.     neg.w    d1
  268.     mulu    #BUFW*2,d2
  269.     cmp.w    #100,d6
  270.     bgt.s    .3
  271.     add.w    #BUFW,d2
  272. .3:    add.b    #(BUFW-BOXW)/2,d0
  273.     add.w    #(BUFH-BOXH)*BUFW,d2
  274.     move.b    d0,(a0)+
  275.     move.b    d1,(a1)+
  276.     move.w    d2,(a2)+
  277.     addq.w    #1,d7
  278.     cmp.w    #256,d7
  279.     bne.s    .2
  280.     mulu    #PFACT,d5
  281.     swap    d5
  282.     and.l    #$FFFF,d5
  283.     dbf    d6,.1
  284.     rts
  285.  
  286. ;-------------------------------------------------------------------------
  287. ; ROUTINES
  288. ;-----------------------------------------------------------------------------
  289.  
  290. DrawStars:
  291.  
  292.     bsr    StarBuffer
  293.     bsr    StarClear
  294.     bsr    StarMove
  295.  
  296.     lea    PerTabX,a0        ; Perspective tables
  297.     lea    PerTabB,a1
  298.     lea    PerTabY,a2
  299.     lea    StarCoords,a3        ; Coordinates
  300.     move.l    StarBufPtr+4,a4        ; Bitplane pointer
  301.     movem.l    Blanks,d0-d7
  302.     move.w    StarAddX,d3        ; Movement offsets
  303.     move.w    StarAddY,d4
  304.     move.w    StarAddZ,d5
  305.     move.l    #$FF,d6
  306.  
  307.     move.w    #(NSTARS/20)-1,d7
  308. AD    SET    0
  309. .Loop:
  310.     REPT    20        ; Loop only for each 20 stars
  311.     lea    (a4),a5
  312.     movem.w    AD(a3),d0-d2        ; Fetch coord (x,y,z)
  313.     add.w    d5,d2        ; Calc Z
  314.     add.w    d4,d1        ; Calc Y
  315.     and.l    d6,d1
  316.     or.w    d2,d1
  317.     add.l    d1,d1
  318.     add.w    (a2,d1.l),a5
  319.     add.w    d3,d0            ; Calc X
  320.     and.l    d6,d0
  321.     or.w    d2,d0
  322.     move.b    (a0,d0.l),d2
  323.     and.w    d6,d2
  324.     move.b    (a1,d0.l),d0        ; Calc bit
  325.     bset    d0,(a5,d2.w)        ; Plot pixel
  326. AD    SET    AD+6
  327.     ENDR
  328.     lea    120(a3),a3
  329.     dbf    d7,.Loop
  330.     rts
  331. ;-----------------------------------------------------------------------------
  332.  
  333. StarClear:            ; Clear a buffer with blitter
  334.     CALL    Gfx,WaitBlit
  335.     lea    CustomBas,a0
  336.     move.l    StarBufPtr+8,BLTDPTH(a0)
  337.     move.w    #0,BLTDMOD(a0)
  338.     move.l    #$01000000,BLTCON0(a0)
  339.     move.w    #BUFH*64+BUFW,BLTSIZE(a0)
  340.     rts
  341.  
  342. ;-----------------------------------------------------------------------------
  343.  
  344. StarBuffer:
  345.  
  346.     lea    StarBufPtr,a0        ; Triple buffering
  347.     movem.l    (a0),d0-d2
  348.     exg    d0,d1
  349.     exg    d1,d2
  350.     movem.l    d0-d2,(a0)
  351.  
  352.     lea    CopBplPtr,a0        ; Update bitplane-pointers
  353.     move.l    StarBufPtr,d0
  354.     move.l    StarBufPtr,d1
  355.     add.l    #BUFW,d1
  356.     move.w    d0,6(a0)
  357.     move.w    d1,14(a0)
  358.     swap    d0
  359.     swap    d1
  360.     move.w    d0,2(a0)
  361.     move.w    d1,10(a0)
  362.     rts
  363.  
  364. ;-----------------------------------------------------------------------------
  365.  
  366. StarMove:                ; Move stars around
  367.  
  368.     lea    SineTable,a0        ; Use sine in X and Y direction
  369.     move.w    SinPosX,d0
  370.     move.w    SinPosY,d1
  371.     add.w    SinSpdX,d0
  372.     add.w    SinSpdY,d1
  373.     and.w    #$FFE,d0
  374.     and.w    #$FFE,d1
  375.     move.w    d0,SinPosX
  376.     move.w    d1,SinPosY
  377.     move.w    (a0,d0.w),d0
  378.     move.w    (a0,d1.w),d1
  379.     move.w    d0,StarAddX
  380.     move.w    d1,StarAddY
  381.     add.w    #ZSPEED<<8,StarAddZ
  382.     and.w    #$FF00,StarAddZ
  383.     rts
  384.  
  385. ;-------------------------------------------------------------------------
  386. ; PUBLICMEM DATA
  387. ;-------------------------------------------------------------------------
  388.  
  389.     SECTION PubBSS,BSS
  390.  
  391. GfxBas:    ds.l    1
  392. IntBas:    ds.l    1
  393. PerTabX:    ds.b    256*256    ; Perspective tables
  394. PerTabB:    ds.b    256*256
  395. PerTabY:    ds.w    256*256
  396.  
  397. ;-------------------------------------------------------------------------
  398.     SECTION PubData,DATA
  399. RndStore:    dc.w    0    ; Random value
  400.  
  401. StarAddX:    dc.w    0    ; Star movement offsets
  402. StarAddY:    dc.w    0
  403. StarAddZ:    dc.w    0
  404.  
  405. SinPosX:    dc.w    0    ; Sine positions
  406. SinPosY:    dc.w    $136
  407.  
  408. SinSpdX:    dc.w    4    ; Sine speeds
  409. SinSpdY:    dc.w    -2
  410.  
  411. StarBufPtr:    dc.l    StarBuffer1    ; Buffer pointers
  412.         dc.l    StarBuffer2
  413.         dc.l    StarBuffer3
  414.  
  415. StarCoords:    ds.w    3*NSTARS    ; Star coordinates
  416.  
  417. GfxName:    dc.b    "graphics.library",0
  418. IntName:    dc.b    "intuition.library",0
  419.     even
  420. SineTable:    dc.w    $0200,$0202,$0203,$0205,$0206,$0208,$0209,$020B
  421.     dc.w    $020D,$020E,$0210,$0211,$0213,$0214,$0216,$0218
  422.     dc.w    $0219,$021B,$021C,$021E,$021F,$0221,$0223,$0224
  423.     dc.w    $0226,$0227,$0229,$022A,$022C,$022D,$022F,$0231
  424.     dc.w    $0232,$0234,$0235,$0237,$0238,$023A,$023C,$023D
  425.     dc.w    $023F,$0240,$0242,$0243,$0245,$0246,$0248,$024A
  426.     dc.w    $024B,$024D,$024E,$0250,$0251,$0253,$0254,$0256
  427.     dc.w    $0258,$0259,$025B,$025C,$025E,$025F,$0261,$0262
  428.     dc.w    $0264,$0265,$0267,$0269,$026A,$026C,$026D,$026F
  429.     dc.w    $0270,$0272,$0273,$0275,$0276,$0278,$0279,$027B
  430.     dc.w    $027C,$027E,$027F,$0281,$0282,$0284,$0286,$0287
  431.     dc.w    $0289,$028A,$028C,$028D,$028F,$0290,$0292,$0293
  432.     dc.w    $0295,$0296,$0298,$0299,$029B,$029C,$029E,$029F
  433.     dc.w    $02A1,$02A2,$02A4,$02A5,$02A7,$02A8,$02AA,$02AB
  434.     dc.w    $02AC,$02AE,$02AF,$02B1,$02B2,$02B4,$02B5,$02B7
  435.     dc.w    $02B8,$02BA,$02BB,$02BD,$02BE,$02C0,$02C1,$02C2
  436.     dc.w    $02C4,$02C5,$02C7,$02C8,$02CA,$02CB,$02CD,$02CE
  437.     dc.w    $02CF,$02D1,$02D2,$02D4,$02D5,$02D7,$02D8,$02D9
  438.     dc.w    $02DB,$02DC,$02DE,$02DF,$02E1,$02E2,$02E3,$02E5
  439.     dc.w    $02E6,$02E8,$02E9,$02EA,$02EC,$02ED,$02EF,$02F0
  440.     dc.w    $02F1,$02F3,$02F4,$02F6,$02F7,$02F8,$02FA,$02FB
  441.     dc.w    $02FC,$02FE,$02FF,$0300,$0302,$0303,$0305,$0306
  442.     dc.w    $0307,$0309,$030A,$030B,$030D,$030E,$030F,$0311
  443.     dc.w    $0312,$0313,$0315,$0316,$0317,$0319,$031A,$031B
  444.     dc.w    $031C,$031E,$031F,$0320,$0322,$0323,$0324,$0326
  445.     dc.w    $0327,$0328,$0329,$032B,$032C,$032D,$032E,$0330
  446.     dc.w    $0331,$0332,$0334,$0335,$0336,$0337,$0339,$033A
  447.     dc.w    $033B,$033C,$033D,$033F,$0340,$0341,$0342,$0344
  448.     dc.w    $0345,$0346,$0347,$0348,$034A,$034B,$034C,$034D
  449.     dc.w    $034E,$0350,$0351,$0352,$0353,$0354,$0356,$0357
  450.     dc.w    $0358,$0359,$035A,$035B,$035C,$035E,$035F,$0360
  451.     dc.w    $0361,$0362,$0363,$0364,$0366,$0367,$0368,$0369
  452.     dc.w    $036A,$036B,$036C,$036D,$036E,$0370,$0371,$0372
  453.     dc.w    $0373,$0374,$0375,$0376,$0377,$0378,$0379,$037A
  454.     dc.w    $037B,$037C,$037D,$037F,$0380,$0381,$0382,$0383
  455.     dc.w    $0384,$0385,$0386,$0387,$0388,$0389,$038A,$038B
  456.     dc.w    $038C,$038D,$038E,$038F,$0390,$0391,$0392,$0393
  457.     dc.w    $0394,$0395,$0396,$0397,$0397,$0398,$0399,$039A
  458.     dc.w    $039B,$039C,$039D,$039E,$039F,$03A0,$03A1,$03A2
  459.     dc.w    $03A3,$03A4,$03A4,$03A5,$03A6,$03A7,$03A8,$03A9
  460.     dc.w    $03AA,$03AB,$03AB,$03AC,$03AD,$03AE,$03AF,$03B0
  461.     dc.w    $03B1,$03B1,$03B2,$03B3,$03B4,$03B5,$03B6,$03B6
  462.     dc.w    $03B7,$03B8,$03B9,$03BA,$03BA,$03BB,$03BC,$03BD
  463.     dc.w    $03BD,$03BE,$03BF,$03C0,$03C1,$03C1,$03C2,$03C3
  464.     dc.w    $03C4,$03C4,$03C5,$03C6,$03C6,$03C7,$03C8,$03C9
  465.     dc.w    $03C9,$03CA,$03CB,$03CB,$03CC,$03CD,$03CD,$03CE
  466.     dc.w    $03CF,$03D0,$03D0,$03D1,$03D1,$03D2,$03D3,$03D3
  467.     dc.w    $03D4,$03D5,$03D5,$03D6,$03D7,$03D7,$03D8,$03D8
  468.     dc.w    $03D9,$03DA,$03DA,$03DB,$03DB,$03DC,$03DD,$03DD
  469.     dc.w    $03DE,$03DE,$03DF,$03DF,$03E0,$03E0,$03E1,$03E2
  470.     dc.w    $03E2,$03E3,$03E3,$03E4,$03E4,$03E5,$03E5,$03E6
  471.     dc.w    $03E6,$03E7,$03E7,$03E8,$03E8,$03E9,$03E9,$03E9
  472.     dc.w    $03EA,$03EA,$03EB,$03EB,$03EC,$03EC,$03ED,$03ED
  473.     dc.w    $03ED,$03EE,$03EE,$03EF,$03EF,$03EF,$03F0,$03F0
  474.     dc.w    $03F1,$03F1,$03F1,$03F2,$03F2,$03F3,$03F3,$03F3
  475.     dc.w    $03F4,$03F4,$03F4,$03F5,$03F5,$03F5,$03F6,$03F6
  476.     dc.w    $03F6,$03F6,$03F7,$03F7,$03F7,$03F8,$03F8,$03F8
  477.     dc.w    $03F8,$03F9,$03F9,$03F9,$03F9,$03FA,$03FA,$03FA
  478.     dc.w    $03FA,$03FB,$03FB,$03FB,$03FB,$03FC,$03FC,$03FC
  479.     dc.w    $03FC,$03FC,$03FD,$03FD,$03FD,$03FD,$03FD,$03FD
  480.     dc.w    $03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE
  481.     dc.w    $03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF
  482.     dc.w    $03FF,$03FF,$0400,$0400,$0400,$0400,$0400,$0400
  483.     dc.w    $0400,$0400,$0400,$0400,$0400,$0400,$0400,$0400
  484.     dc.w    $0400,$0400,$0400,$0400,$0400,$0400,$0400,$0400
  485.     dc.w    $0400,$0400,$0400,$0400,$0400,$0400,$0400,$03FF
  486.     dc.w    $03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF
  487.     dc.w    $03FF,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE
  488.     dc.w    $03FE,$03FD,$03FD,$03FD,$03FD,$03FD,$03FD,$03FC
  489.     dc.w    $03FC,$03FC,$03FC,$03FC,$03FB,$03FB,$03FB,$03FB
  490.     dc.w    $03FA,$03FA,$03FA,$03FA,$03F9,$03F9,$03F9,$03F9
  491.     dc.w    $03F8,$03F8,$03F8,$03F8,$03F7,$03F7,$03F7,$03F6
  492.     dc.w    $03F6,$03F6,$03F6,$03F5,$03F5,$03F5,$03F4,$03F4
  493.     dc.w    $03F4,$03F3,$03F3,$03F3,$03F2,$03F2,$03F1,$03F1
  494.     dc.w    $03F1,$03F0,$03F0,$03EF,$03EF,$03EF,$03EE,$03EE
  495.     dc.w    $03ED,$03ED,$03ED,$03EC,$03EC,$03EB,$03EB,$03EA
  496.     dc.w    $03EA,$03E9,$03E9,$03E9,$03E8,$03E8,$03E7,$03E7
  497.     dc.w    $03E6,$03E6,$03E5,$03E5,$03E4,$03E4,$03E3,$03E3
  498.     dc.w    $03E2,$03E2,$03E1,$03E0,$03E0,$03DF,$03DF,$03DE
  499.     dc.w    $03DE,$03DD,$03DD,$03DC,$03DB,$03DB,$03DA,$03DA
  500.     dc.w    $03D9,$03D8,$03D8,$03D7,$03D7,$03D6,$03D5,$03D5
  501.     dc.w    $03D4,$03D3,$03D3,$03D2,$03D1,$03D1,$03D0,$03D0
  502.     dc.w    $03CF,$03CE,$03CD,$03CD,$03CC,$03CB,$03CB,$03CA
  503.     dc.w    $03C9,$03C9,$03C8,$03C7,$03C6,$03C6,$03C5,$03C4
  504.     dc.w    $03C4,$03C3,$03C2,$03C1,$03C1,$03C0,$03BF,$03BE
  505.     dc.w    $03BD,$03BD,$03BC,$03BB,$03BA,$03BA,$03B9,$03B8
  506.     dc.w    $03B7,$03B6,$03B6,$03B5,$03B4,$03B3,$03B2,$03B1
  507.     dc.w    $03B1,$03B0,$03AF,$03AE,$03AD,$03AC,$03AB,$03AB
  508.     dc.w    $03AA,$03A9,$03A8,$03A7,$03A6,$03A5,$03A4,$03A4
  509.     dc.w    $03A3,$03A2,$03A1,$03A0,$039F,$039E,$039D,$039C
  510.     dc.w    $039B,$039A,$0399,$0398,$0397,$0397,$0396,$0395
  511.     dc.w    $0394,$0393,$0392,$0391,$0390,$038F,$038E,$038D
  512.     dc.w    $038C,$038B,$038A,$0389,$0388,$0387,$0386,$0385
  513.     dc.w    $0384,$0383,$0382,$0381,$0380,$037F,$037D,$037C
  514.     dc.w    $037B,$037A,$0379,$0378,$0377,$0376,$0375,$0374
  515.     dc.w    $0373,$0372,$0371,$0370,$036E,$036D,$036C,$036B
  516.     dc.w    $036A,$0369,$0368,$0367,$0366,$0364,$0363,$0362
  517.     dc.w    $0361,$0360,$035F,$035E,$035C,$035B,$035A,$0359
  518.     dc.w    $0358,$0357,$0356,$0354,$0353,$0352,$0351,$0350
  519.     dc.w    $034E,$034D,$034C,$034B,$034A,$0348,$0347,$0346
  520.     dc.w    $0345,$0344,$0342,$0341,$0340,$033F,$033D,$033C
  521.     dc.w    $033B,$033A,$0339,$0337,$0336,$0335,$0334,$0332
  522.     dc.w    $0331,$0330,$032E,$032D,$032C,$032B,$0329,$0328
  523.     dc.w    $0327,$0326,$0324,$0323,$0322,$0320,$031F,$031E
  524.     dc.w    $031C,$031B,$031A,$0319,$0317,$0316,$0315,$0313
  525.     dc.w    $0312,$0311,$030F,$030E,$030D,$030B,$030A,$0309
  526.     dc.w    $0307,$0306,$0305,$0303,$0302,$0300,$02FF,$02FE
  527.     dc.w    $02FC,$02FB,$02FA,$02F8,$02F7,$02F5,$02F4,$02F3
  528.     dc.w    $02F1,$02F0,$02EF,$02ED,$02EC,$02EA,$02E9,$02E8
  529.     dc.w    $02E6,$02E5,$02E3,$02E2,$02E1,$02DF,$02DE,$02DC
  530.     dc.w    $02DB,$02D9,$02D8,$02D7,$02D5,$02D4,$02D2,$02D1
  531.     dc.w    $02CF,$02CE,$02CD,$02CB,$02CA,$02C8,$02C7,$02C5
  532.     dc.w    $02C4,$02C2,$02C1,$02C0,$02BE,$02BD,$02BB,$02BA
  533.     dc.w    $02B8,$02B7,$02B5,$02B4,$02B2,$02B1,$02AF,$02AE
  534.     dc.w    $02AC,$02AB,$02AA,$02A8,$02A7,$02A5,$02A4,$02A2
  535.     dc.w    $02A1,$029F,$029E,$029C,$029B,$0299,$0298,$0296
  536.     dc.w    $0295,$0293,$0292,$0290,$028F,$028D,$028C,$028A
  537.     dc.w    $0289,$0287,$0286,$0284,$0282,$0281,$027F,$027E
  538.     dc.w    $027C,$027B,$0279,$0278,$0276,$0275,$0273,$0272
  539.     dc.w    $0270,$026F,$026D,$026C,$026A,$0269,$0267,$0265
  540.     dc.w    $0264,$0262,$0261,$025F,$025E,$025C,$025B,$0259
  541.     dc.w    $0258,$0256,$0254,$0253,$0251,$0250,$024E,$024D
  542.     dc.w    $024B,$024A,$0248,$0246,$0245,$0243,$0242,$0240
  543.     dc.w    $023F,$023D,$023C,$023A,$0238,$0237,$0235,$0234
  544.     dc.w    $0232,$0231,$022F,$022D,$022C,$022A,$0229,$0227
  545.     dc.w    $0226,$0224,$0223,$0221,$021F,$021E,$021C,$021B
  546.     dc.w    $0219,$0218,$0216,$0214,$0213,$0211,$0210,$020E
  547.     dc.w    $020D,$020B,$0209,$0208,$0206,$0205,$0203,$0202
  548.     dc.w    $0200,$01FE,$01FD,$01FB,$01FA,$01F8,$01F7,$01F5
  549.     dc.w    $01F3,$01F2,$01F0,$01EF,$01ED,$01EC,$01EA,$01E8
  550.     dc.w    $01E7,$01E5,$01E4,$01E2,$01E1,$01DF,$01DD,$01DC
  551.     dc.w    $01DA,$01D9,$01D7,$01D6,$01D4,$01D3,$01D1,$01CF
  552.     dc.w    $01CE,$01CC,$01CB,$01C9,$01C8,$01C6,$01C4,$01C3
  553.     dc.w    $01C1,$01C0,$01BE,$01BD,$01BB,$01BA,$01B8,$01B6
  554.     dc.w    $01B5,$01B3,$01B2,$01B0,$01AF,$01AD,$01AC,$01AA
  555.     dc.w    $01A8,$01A7,$01A5,$01A4,$01A2,$01A1,$019F,$019E
  556.     dc.w    $019C,$019B,$0199,$0197,$0196,$0194,$0193,$0191
  557.     dc.w    $0190,$018E,$018D,$018B,$018A,$0188,$0187,$0185
  558.     dc.w    $0184,$0182,$0181,$017F,$017E,$017C,$017A,$0179
  559.     dc.w    $0177,$0176,$0174,$0173,$0171,$0170,$016E,$016D
  560.     dc.w    $016B,$016A,$0168,$0167,$0165,$0164,$0162,$0161
  561.     dc.w    $015F,$015E,$015C,$015B,$0159,$0158,$0156,$0155
  562.     dc.w    $0154,$0152,$0151,$014F,$014E,$014C,$014B,$0149
  563.     dc.w    $0148,$0146,$0145,$0143,$0142,$0140,$013F,$013E
  564.     dc.w    $013C,$013B,$0139,$0138,$0136,$0135,$0133,$0132
  565.     dc.w    $0131,$012F,$012E,$012C,$012B,$0129,$0128,$0127
  566.     dc.w    $0125,$0124,$0122,$0121,$011F,$011E,$011D,$011B
  567.     dc.w    $011A,$0118,$0117,$0116,$0114,$0113,$0111,$0110
  568.     dc.w    $010F,$010D,$010C,$010A,$0109,$0108,$0106,$0105
  569.     dc.w    $0104,$0102,$0101,$0100,$00FE,$00FD,$00FB,$00FA
  570.     dc.w    $00F9,$00F7,$00F6,$00F5,$00F3,$00F2,$00F1,$00EF
  571.     dc.w    $00EE,$00ED,$00EB,$00EA,$00E9,$00E7,$00E6,$00E5
  572.     dc.w    $00E4,$00E2,$00E1,$00E0,$00DE,$00DD,$00DC,$00DA
  573.     dc.w    $00D9,$00D8,$00D7,$00D5,$00D4,$00D3,$00D2,$00D0
  574.     dc.w    $00CF,$00CE,$00CC,$00CB,$00CA,$00C9,$00C7,$00C6
  575.     dc.w    $00C5,$00C4,$00C3,$00C1,$00C0,$00BF,$00BE,$00BC
  576.     dc.w    $00BB,$00BA,$00B9,$00B8,$00B6,$00B5,$00B4,$00B3
  577.     dc.w    $00B2,$00B0,$00AF,$00AE,$00AD,$00AC,$00AA,$00A9
  578.     dc.w    $00A8,$00A7,$00A6,$00A5,$00A4,$00A2,$00A1,$00A0
  579.     dc.w    $009F,$009E,$009D,$009C,$009A,$0099,$0098,$0097
  580.     dc.w    $0096,$0095,$0094,$0093,$0092,$0090,$008F,$008E
  581.     dc.w    $008D,$008C,$008B,$008A,$0089,$0088,$0087,$0086
  582.     dc.w    $0085,$0084,$0083,$0081,$0080,$007F,$007E,$007D
  583.     dc.w    $007C,$007B,$007A,$0079,$0078,$0077,$0076,$0075
  584.     dc.w    $0074,$0073,$0072,$0071,$0070,$006F,$006E,$006D
  585.     dc.w    $006C,$006B,$006A,$0069,$0069,$0068,$0067,$0066
  586.     dc.w    $0065,$0064,$0063,$0062,$0061,$0060,$005F,$005E
  587.     dc.w    $005D,$005C,$005C,$005B,$005A,$0059,$0058,$0057
  588.     dc.w    $0056,$0055,$0055,$0054,$0053,$0052,$0051,$0050
  589.     dc.w    $004F,$004F,$004E,$004D,$004C,$004B,$004A,$004A
  590.     dc.w    $0049,$0048,$0047,$0046,$0046,$0045,$0044,$0043
  591.     dc.w    $0043,$0042,$0041,$0040,$003F,$003F,$003E,$003D
  592.     dc.w    $003C,$003C,$003B,$003A,$003A,$0039,$0038,$0037
  593.     dc.w    $0037,$0036,$0035,$0035,$0034,$0033,$0033,$0032
  594.     dc.w    $0031,$0030,$0030,$002F,$002F,$002E,$002D,$002D
  595.     dc.w    $002C,$002B,$002B,$002A,$0029,$0029,$0028,$0028
  596.     dc.w    $0027,$0026,$0026,$0025,$0025,$0024,$0023,$0023
  597.     dc.w    $0022,$0022,$0021,$0021,$0020,$0020,$001F,$001E
  598.     dc.w    $001E,$001D,$001D,$001C,$001C,$001B,$001B,$001A
  599.     dc.w    $001A,$0019,$0019,$0018,$0018,$0017,$0017,$0017
  600.     dc.w    $0016,$0016,$0015,$0015,$0014,$0014,$0013,$0013
  601.     dc.w    $0013,$0012,$0012,$0011,$0011,$0011,$0010,$0010
  602.     dc.w    $000F,$000F,$000F,$000E,$000E,$000D,$000D,$000D
  603.     dc.w    $000C,$000C,$000C,$000B,$000B,$000B,$000A,$000A
  604.     dc.w    $000A,$000A,$0009,$0009,$0009,$0008,$0008,$0008
  605.     dc.w    $0008,$0007,$0007,$0007,$0007,$0006,$0006,$0006
  606.     dc.w    $0006,$0005,$0005,$0005,$0005,$0004,$0004,$0004
  607.     dc.w    $0004,$0004,$0003,$0003,$0003,$0003,$0003,$0003
  608.     dc.w    $0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002
  609.     dc.w    $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001
  610.     dc.w    $0001,$0001,$0000,$0000,$0000,$0000,$0000,$0000
  611.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  612.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  613.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0001
  614.     dc.w    $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001
  615.     dc.w    $0001,$0002,$0002,$0002,$0002,$0002,$0002,$0002
  616.     dc.w    $0002,$0003,$0003,$0003,$0003,$0003,$0003,$0004
  617.     dc.w    $0004,$0004,$0004,$0004,$0005,$0005,$0005,$0005
  618.     dc.w    $0006,$0006,$0006,$0006,$0007,$0007,$0007,$0007
  619.     dc.w    $0008,$0008,$0008,$0008,$0009,$0009,$0009,$000A
  620.     dc.w    $000A,$000A,$000A,$000B,$000B,$000B,$000C,$000C
  621.     dc.w    $000C,$000D,$000D,$000D,$000E,$000E,$000F,$000F
  622.     dc.w    $000F,$0010,$0010,$0011,$0011,$0011,$0012,$0012
  623.     dc.w    $0013,$0013,$0013,$0014,$0014,$0015,$0015,$0016
  624.     dc.w    $0016,$0017,$0017,$0017,$0018,$0018,$0019,$0019
  625.     dc.w    $001A,$001A,$001B,$001B,$001C,$001C,$001D,$001D
  626.     dc.w    $001E,$001E,$001F,$0020,$0020,$0021,$0021,$0022
  627.     dc.w    $0022,$0023,$0023,$0024,$0025,$0025,$0026,$0026
  628.     dc.w    $0027,$0028,$0028,$0029,$0029,$002A,$002B,$002B
  629.     dc.w    $002C,$002D,$002D,$002E,$002F,$002F,$0030,$0030
  630.     dc.w    $0031,$0032,$0033,$0033,$0034,$0035,$0035,$0036
  631.     dc.w    $0037,$0037,$0038,$0039,$003A,$003A,$003B,$003C
  632.     dc.w    $003C,$003D,$003E,$003F,$003F,$0040,$0041,$0042
  633.     dc.w    $0043,$0043,$0044,$0045,$0046,$0046,$0047,$0048
  634.     dc.w    $0049,$004A,$004A,$004B,$004C,$004D,$004E,$004F
  635.     dc.w    $004F,$0050,$0051,$0052,$0053,$0054,$0055,$0055
  636.     dc.w    $0056,$0057,$0058,$0059,$005A,$005B,$005C,$005C
  637.     dc.w    $005D,$005E,$005F,$0060,$0061,$0062,$0063,$0064
  638.     dc.w    $0065,$0066,$0067,$0068,$0069,$0069,$006A,$006B
  639.     dc.w    $006C,$006D,$006E,$006F,$0070,$0071,$0072,$0073
  640.     dc.w    $0074,$0075,$0076,$0077,$0078,$0079,$007A,$007B
  641.     dc.w    $007C,$007D,$007E,$007F,$0080,$0081,$0083,$0084
  642.     dc.w    $0085,$0086,$0087,$0088,$0089,$008A,$008B,$008C
  643.     dc.w    $008D,$008E,$008F,$0090,$0092,$0093,$0094,$0095
  644.     dc.w    $0096,$0097,$0098,$0099,$009A,$009C,$009D,$009E
  645.     dc.w    $009F,$00A0,$00A1,$00A2,$00A4,$00A5,$00A6,$00A7
  646.     dc.w    $00A8,$00A9,$00AB,$00AC,$00AD,$00AE,$00AF,$00B0
  647.     dc.w    $00B2,$00B3,$00B4,$00B5,$00B6,$00B8,$00B9,$00BA
  648.     dc.w    $00BB,$00BC,$00BE,$00BF,$00C0,$00C1,$00C3,$00C4
  649.     dc.w    $00C5,$00C6,$00C7,$00C9,$00CA,$00CB,$00CC,$00CE
  650.     dc.w    $00CF,$00D0,$00D2,$00D3,$00D4,$00D5,$00D7,$00D8
  651.     dc.w    $00D9,$00DA,$00DC,$00DD,$00DE,$00E0,$00E1,$00E2
  652.     dc.w    $00E4,$00E5,$00E6,$00E7,$00E9,$00EA,$00EB,$00ED
  653.     dc.w    $00EE,$00EF,$00F1,$00F2,$00F3,$00F5,$00F6,$00F7
  654.     dc.w    $00F9,$00FA,$00FB,$00FD,$00FE,$0100,$0101,$0102
  655.     dc.w    $0104,$0105,$0106,$0108,$0109,$010B,$010C,$010D
  656.     dc.w    $010F,$0110,$0111,$0113,$0114,$0116,$0117,$0118
  657.     dc.w    $011A,$011B,$011D,$011E,$011F,$0121,$0122,$0124
  658.     dc.w    $0125,$0127,$0128,$0129,$012B,$012C,$012E,$012F
  659.     dc.w    $0131,$0132,$0133,$0135,$0136,$0138,$0139,$013B
  660.     dc.w    $013C,$013E,$013F,$0140,$0142,$0143,$0145,$0146
  661.     dc.w    $0148,$0149,$014B,$014C,$014E,$014F,$0151,$0152
  662.     dc.w    $0154,$0155,$0156,$0158,$0159,$015B,$015C,$015E
  663.     dc.w    $015F,$0161,$0162,$0164,$0165,$0167,$0168,$016A
  664.     dc.w    $016B,$016D,$016E,$0170,$0171,$0173,$0174,$0176
  665.     dc.w    $0177,$0179,$017A,$017C,$017E,$017F,$0181,$0182
  666.     dc.w    $0184,$0185,$0187,$0188,$018A,$018B,$018D,$018E
  667.     dc.w    $0190,$0191,$0193,$0194,$0196,$0198,$0199,$019B
  668.     dc.w    $019C,$019E,$019F,$01A1,$01A2,$01A4,$01A5,$01A7
  669.     dc.w    $01A8,$01AA,$01AC,$01AD,$01AF,$01B0,$01B2,$01B3
  670.     dc.w    $01B5,$01B6,$01B8,$01BA,$01BB,$01BD,$01BE,$01C0
  671.     dc.w    $01C1,$01C3,$01C4,$01C6,$01C8,$01C9,$01CB,$01CC
  672.     dc.w    $01CE,$01CF,$01D1,$01D3,$01D4,$01D6,$01D7,$01D9
  673.     dc.w    $01DA,$01DC,$01DD,$01DF,$01E1,$01E2,$01E4,$01E5
  674.     dc.w    $01E7,$01E8,$01EA,$01EC,$01ED,$01EF,$01F0,$01F2
  675.     dc.w    $01F3,$01F5,$01F7,$01F8,$01FA,$01FB,$01FD,$01FE
  676.  
  677. ;-------------------------------------------------------------------------
  678. ; CHIPMEM DATA
  679. ;-------------------------------------------------------------------------
  680.  
  681.     SECTION "ChipBSS",BSS_C
  682.  
  683. Blanks:    ds.b    256    ; 256 null-bytes
  684.  
  685. StarBuffer1:    ds.b    2*BUFW*BUFH    ; Starfield buffers
  686. StarBuffer2:    ds.b    2*BUFW*BUFH
  687. StarBuffer3:    ds.b    2*BUFW*BUFH
  688.  
  689. ;-------------------------------------------------------------------------
  690. ; COPPERLIST
  691. ;-------------------------------------------------------------------------
  692.  
  693.     SECTION "ChipData",DATA_C
  694.  
  695. CopperList:    dc.w    $008E,$2471,$0090,$34D1    ; Display area
  696.     dc.w    $0092,$0030,$0094,$00D8
  697.  
  698. CopSprites:    dc.w    $0120,$0000,$0122,$0000    ; Sprite-pointers
  699.     dc.w    $0124,$0000,$0126,$0000
  700.     dc.w    $0128,$0000,$012A,$0000
  701.     dc.w    $012C,$0000,$012E,$0000
  702.     dc.w    $0130,$0000,$0132,$0000
  703.     dc.w    $0134,$0000,$0136,$0000
  704.     dc.w    $0138,$0000,$013A,$0000
  705.     dc.w    $013C,$0000,$013E,$0000
  706.  
  707.     IFNE    DTIME            ; Palette
  708.     dc.w    $0182,$0000
  709.     ELSE
  710.     dc.w    $0180,$0000
  711.     ENDC
  712.     dc.w    $0182,$0EEF
  713.     dc.w    $0184,$0778
  714.     dc.w    $0186,$0EEF
  715.  
  716.     dc.w    $0102,$0000
  717.     dc.w    $0108,$002C,$010A,$002C    ; Modulos
  718. CopBplPtr:    dc.w    $00E0,$0000,$00E2,$0000    ; Bitplane-pointers
  719.     dc.w    $00E4,$0000,$00E6,$0000
  720.  
  721.     dc.w    $2407,$FFFE,$0100,$2200    ; Turn on planes on line $24
  722.  
  723.     dc.w    $FFDF,$FFFE        ; Wait for line $100
  724.  
  725.     dc.w    $3407,$FFFE,$0100,$0000    ; Turn off planes on line $134
  726.     dc.w    $FFFF,$FFFE
  727.  
  728. ;-----------------------------------------------------------------------------
  729.  
  730.